Pythonを使ってChatWorkに発言してみた
サーモン大好き横山です。
今回はPythonを使って、ChatWorkに発言する所まで紹介したいと思います。
はじめに
実はドキュメントを見ると、 curl
コマンドを使って発言する方法が書いてあります。
「ならShellの方がいいじゃん!」って思いますが、複雑な処理と一緒にセットとした場合、Pythonを使って書いたほうが何かと便利です。
(※個人の感想です)
準備
ChatWork側編
プログラムからChatWorkの部屋に書き込む上で必要な情報は以下の3つあります。
- APIKEY
- ENDPOINT
- ROOMID
APIKEY
ChatWorkドキュメントページの言葉をそのままお借りして説明しますと。
チャットワークにログインし「動作設定」から「API発行」タブを選択し、開発用のAPIトークンを取得してください。 APIトークンは使用することでチャットワークの利用データを自由に閲覧、編集、操作できるため、第三者に開示しないよう取り扱いには十分ご注意ください。
APIトークンは再発行できますので、もし不正利用の可能性がある場合は再発行を実行してください。再発行を実行した場合は、以前のAPIトークンはすべて無効となります。
ただし、ユーザの権限によってはAPIの発行が出来ないことも有りますので、その場合はChatWorkを管理している人にAPIKEYを発行してもらいましょう。
ENDPOINT
ChatWorkドキュメントページの言葉をそのままお借りして説明しますと。
チャットワークAPIはRESTの原則に基づいてAPI設計されています。RESTではチャット、タスクといったそれぞれのリソースに対して固有の一意なURIが与えられており(エンドポイントと呼ぶ)、そのエンドポイントに対してGETやPOST、PUT、DELETEといったHTTPメソッドでパラメータを送ることで投稿や削除などリソースの操作を行います。
エンドポイントのベースURIは、https://api.chatwork.com/v1 となっています。このあとに、各エンドポイントのパスを記述してください。(例:/me の場合は https://api.chatwork.com/v1/me)
今後、APIのバージョンが上がった場合は/v1のバージョン部分が変更され、旧バージョンのAPIは一定の移行期間の間維持されます。
とどのつまり、リクエストURL先のことです。今後ChatWork側でバージョンアップするかもしれませんが、2016年5月10日現在 https://api.chatwork.com/v1
を指定しておけば間違いないです。
追記 (2017/05/23時点)
2017/01/26 - チャットワークAPIバージョンアップのお知らせ より 2017年05月15日 をもちまして、 https://api.chatwork.com/v1 のエンドポイントが使用できなくなりました。
それに伴い今後は、https://api.chatwork.com/v2 のエンドポイントをご活用ください。
ROOMID
ChatWorkで会話してる部屋のIDです。 ルームIDの調べ方は、ブラウザのURLの末尾の部分にある「rid」以降の数字の部分です。
Python側編
今回の準備は、requests
だけ用意します。
virtualenvの準備は過去記事を参考にしてください。→ virtualenvを使っていろいろなライブラリを手軽にためそう
$ mkdir -p /tmp/work/ $ cd /tmp/work $ virtualenv -p `which python2.7` venv $ . venv/bin/activate (venv)$ pip install -U pip #pipのアップデート (venv)$ pip install requests #requestsのインストール
コード
今回はこちら
今回は、 POSTメソッドの /rooms/{room_id}/messages を利用して発言するサンプルが以下になります。
リクエストヘッダーにAPIKEYを仕込み、リクエストURLに先ほど説明した、ENDPOINTとROOMIDを指定し、paramsに発言したいbodyの内容を書き込んで実行すれば実行出来ます。
#!/usr/bin/env python # -*- encoding: utf-8 -*- from __future__ import print_function, unicode_literals import requests import pprint APIKEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ENDPOINT = 'https://api.chatwork.com/v1' ROOMID = '27xxxxxx' post_message_url = '{}/rooms/{}/messages'.format(ENDPOINT, ROOMID) headers = { 'X-ChatWorkToken': APIKEY } params = { 'body': '今日も一日がんばるめそ' } resp = requests.post(post_message_url, headers=headers, params=params) pprint.pprint(resp.content)
実行結果
今回はくらめそちゃんに発言してもらいました。
$ python post_cw.py '{"message_id":1197655778}'
まとめ
いかがだったでしょうか?
ChatWorkへの発言も意外と簡単に出来ました。
ChatWorkで何か通知したいとかの用途の参考になれば幸いです。